With advancement of the science and technologies, many cloud service providers (e.g., AMAZON®, GOOGLE®, VMWARE®, MICROSOFT® etc.) now provide cloud computing services, and allocate virtual hosts to users to process data to meet the users' needs. The cloud computing services may adopt the HADOOP® computing framework, the SPARK™ computing framework or multiple kinds of other cloud computing frameworks to provide platforms for processing big data computation. Under such public cloud service architectures, most of the cloud service providers have sufficient hardware resources to provide almost infinite computing resources. Therefore, when the complexity of a program to be executed by a user increases or the data amount to be processed increases, the users may adjust or set by themselves the number of virtual hosts needed and system parameters (i.e., hardware and software configurations) thereof to satisfy their own need.
However, the adjustment or setting of the number of virtual hosts or system parameters thereof are determined by the users themselves by experience instead of being determined through effectively analyzing the complexity of the program to be executed and the data amount to be processed, and the current cloud service providers have not provided such an analyzing service. Moreover, if limitation of the computing resources (i.e., there is a limitation on settings of the number of virtual hosts and system parameters thereof) is taken into consideration, adjusting or setting the number of virtual hosts and system parameters thereof by the users themselves will cause unfairness in allocation of the limited resources and make it impossible to optimize use of the limited resources, thus degrading the overall efficiency of the computing system.
Accordingly, an urgent need exists in the art to provide a cloud computing resource optimization mechanism that can automatically allocate computing resources and add or delete virtual hosts under conditions of limited computing resources to optimize use of the limited computing resources.